package com.pinyougou.sellergoods.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.ISelect;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pinyougou.common.pojo.PageResult;
import com.pinyougou.mapper.SellerMapper;
import com.pinyougou.pojo.Seller;
import com.pinyougou.service.SellerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 *  @Service(interfaceName = "com.pinyougou.service.SellerService")的作用是暴露给控制层使用
 *  控制层通过@Refercene注解将接口名注入，建立依赖关系
 *
 *   业务层扫描包+@Service(interfaceName=***来暴露)
 *   表现层是通过扫描包+@Reference,将业务层的接口注入,建立关系
 *
 *  为什么使用这个注解，因为这个注解的就是扫描包的方式+注解的方式结合才有
 *  为什么要通过@Refercene注解将接口名注入,因为控制层和业务层是独立的服务器，所以不能直接调用，
 *  这时需要通过dubbo远程调用，这样才能调用给业务层
 */
@Service(interfaceName = "com.pinyougou.service.SellerService")
@Transactional
public class SellerServiceImpl implements SellerService {

    @Autowired
    private SellerMapper sellerMapper;
    /**
     * 添加商家注册的数据
     *
     * @param seller
     */
    @Override
    public void save(Seller seller) {
        try {
            //设置注册时，是没有审核
            seller.setStatus("0");
            seller.setCreateTime(new Date());
            sellerMapper.insertSelective(seller);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 修改方法
     *
     * @param seller
     */
    @Override
    public void update(Seller seller) {

    }

    /**
     * 根据主键id删除
     *
     * @param id
     */
    @Override
    public void delete(Serializable id) {

    }

    /**
     * 批量删除
     *
     * @param ids
     */
    @Override
    public void deleteAll(Serializable[] ids) {

    }

    /**
     * 根据主键id查询
     *
     * @param id
     */
    @Override
    public Seller findOne(Serializable id) {


        return sellerMapper.selectByPrimaryKey(id);
    }

    /**
     * 查询全部
     */
    @Override
    public List<Seller> findAll() {
        return null;
    }

    /** 多条件分页查询*/
    @Override
    public PageResult findByPage(Seller seller, int page, int rows) {
        try{
            /** 开始分页 */
            PageInfo<Seller> pageInfo = PageHelper.startPage(page, rows)
                    .doSelectPageInfo(new ISelect() {
                        @Override
                        public void doSelect() {
                            sellerMapper.findAll(seller);
                        }
                    });
            return new PageResult(pageInfo.getTotal(), pageInfo.getList());
        }catch (Exception ex){
            throw new RuntimeException(ex);
        }
    }

    /**
     * 修改商家状态
     *
     * @param sellerId
     * @param status
     */
    @Override
    public void updateStatus(String sellerId, String status) {

        try {
            Seller seller =new Seller();
            seller.setStatus(status);
            seller.setSellerId(sellerId);
            sellerMapper.updateByPrimaryKeySelective(seller);

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 多条件分页查询
     *
     * @param seller
     * @param page
     * @param rows
     */
   /* @Override
    public List<Seller> findByPage(Seller seller, int page, int rows) {
        return null;
    }*/
}
